using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._ParcelTools
{
    /// <summary>
    /// <para>Build Parcel Fabric</para>
    /// <para>Builds parcels in a parcel fabric.  Parcels can be built from polygons or lines. If parcels are built from polygons, the tool creates parcel lines and parcel points. If parcels are built from lines, the tool creates the missing polygons and points.
    /// When building parcels from lines, parcel seeds are required.</para>
    /// <para>在宗地结构中构建宗地。 宗地可以从面或线构建。如果宗需要从面构建，则该工具将创建宗地线和宗地点。如果宗地是从线构建的，则该工具将创建缺失的面和点。
    /// 从生产线构建宗地时，需要宗地种子。</para>
    /// </summary>    
    [DisplayName("Build Parcel Fabric")]
    public class BuildParcelFabric : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public BuildParcelFabric()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_parcel_fabric">
        /// <para>Input Parcel Fabric</para>
        /// <para>The parcel fabric for which to parcels will be built. The parcel fabric can be from a file geodatabase or a feature service.</para>
        /// <para>将构建用于宗地的宗地结构。宗地结构可以来自文件地理数据库或要素服务。</para>
        /// </param>
        public BuildParcelFabric(object _in_parcel_fabric)
        {
            this._in_parcel_fabric = _in_parcel_fabric;
        }
        public override string ToolboxName => "Parcel Tools";

        public override string ToolName => "Build Parcel Fabric";

        public override string CallName => "parcel.BuildParcelFabric";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_parcel_fabric, _extent, _updated_parcel_fabric, _record_name];

        /// <summary>
        /// <para>Input Parcel Fabric</para>
        /// <para>The parcel fabric for which to parcels will be built. The parcel fabric can be from a file geodatabase or a feature service.</para>
        /// <para>将构建用于宗地的宗地结构。宗地结构可以来自文件地理数据库或要素服务。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Parcel Fabric")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_parcel_fabric { get; set; }


        /// <summary>
        /// <para>Extent</para>
        /// <para><xdoc>
        ///   <para>The extent of the dataset to be processed. Only features that fall within the specified extent will be processed.</para>
        ///   <bulletList>
        ///     <bullet_item>Default—The extent will be based on the maximum extent of all participating inputs. This is the default.</bullet_item><para/>
        ///     <bullet_item>Union of Inputs—The extent will be based on the maximum extent of all inputs.</bullet_item><para/>
        ///     <bullet_item>Intersection of Inputs—The extent will be based on the minimum area common to all inputs.</bullet_item><para/>
        ///     <bullet_item>Current Display Extent—The extent is equal to the visible display. The option is not available when there is no active map.</bullet_item><para/>
        ///     <bullet_item>As Specified Below—The extent will be based on the minimum and maximum extent values specified.</bullet_item><para/>
        ///     <bullet_item>Browse—The extent will be based on an existing dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要处理的数据集的范围。仅处理指定范围内的要素。</para>
        ///   <bulletList>
        ///     <bullet_item>默认值 - 范围将基于所有参与输入的最大范围。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>输入并集 - 范围将基于所有输入的最大范围。</bullet_item><para/>
        ///     <bullet_item>输入交点 - 范围将基于所有输入共有的最小面积。</bullet_item><para/>
        ///     <bullet_item>当前显示范围 - 范围等于可见显示。当没有活动地图时，该选项不可用。</bullet_item><para/>
        ///     <bullet_item>如下所述 - 范围将基于指定的最小和最大范围值。</bullet_item><para/>
        ///     <bullet_item>浏览 - 范围将基于现有数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Extent")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _extent { get; set; } = null;


        /// <summary>
        /// <para>Updated Parcel Fabric</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Parcel Fabric")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_parcel_fabric { get; set; }


        /// <summary>
        /// <para>Record Name</para>
        /// <para>The name of the existing parcel record. Only parcels associated with this record will be built.</para>
        /// <para>现有宗地记录的名称。将仅构建与此记录关联的宗地。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Record Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _record_name { get; set; } = null;


        public BuildParcelFabric SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}